package gestioneDatabase.User;

import gestioneDatabase.MultipleDatabaseElementUser;

import java.util.HashMap;

import models.User;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * Ricerca nel Database tutti gli utenti.
 * 
 */

public class AllUsersRetriever extends MultipleDatabaseElementUser {

	private AllUsersRetrieverFiller userFiller = new AllUsersRetrieverFiller();
	private HashMap<String, User> users = new HashMap<String, User>();

	@Override
	public void execute() {
		users.clear();
		try {

			NodeList nList = open("DatabaseUser", "User");

			for (int i = 0; i < nList.getLength(); i++) {

				Node nNode = nList.item(i);

				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nNode;

					User user = userFiller.fill(eElement);
					users.put(user.getOpenId(), user);
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Restituisce l'elenco di tutti gli utenti in una {@link HashMap}
	 * 
	 * @return L'elenco di tutti gli utenti.
	 */
	public HashMap<String, User> getUsers() {
		execute();
		return users;
	}

}
